home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / wmv12s.zip / ABSDR.ASM next >
Assembly Source File  |  1993-01-04  |  1KB  |  58 lines

  1. ; bios call to do absolute disk read/write
  2. ; using int86 from C to call int 25h and 26h will freeze the computer
  3. ; (because si and di were modified?), so I had to write this in assembly.
  4.  
  5. _text    segment public byte 'code'
  6.     assume cs:_text
  7.  
  8.     public    _absdr        ; absolute disk read
  9. _absdr    proc    near
  10.     push    si
  11.     push    di
  12.     push    bp
  13.     mov    bp,sp
  14.  
  15.     mov    al,[bp+8]    ; drive number
  16.     mov    cx,[bp+10]    ; number of sectors to read
  17.     mov    dx,[bp+12]    ; beginning sector number
  18.     mov    bx,[bp+14]    ; buffer address
  19.     int    25h        ; absolute disk read
  20. ; int 25h supposed to destroy all registers except segment registers
  21.     jc    error        ; if error, leave error no in AX
  22.     mov    ax,0        ; clear error number if no error
  23. error:
  24.     inc    sp        ; pop the flags
  25.     inc    sp        ; pop the flags
  26.     pop    bp
  27.     pop    di
  28.     pop    si
  29.     ret
  30. _absdr    endp
  31.  
  32.     public    _absdw        ; absolute disk write
  33. _absdw    proc    near
  34.     push    si
  35.     push    di
  36.     push    bp
  37.     mov    bp,sp
  38.  
  39.     mov    al,[bp+8]    ; drive number
  40.     mov    cx,[bp+10]    ; number of sectors to read
  41.     mov    dx,[bp+12]    ; beginning sector number
  42.     mov    bx,[bp+14]    ; buffer address
  43.     int    26h        ; absolute disk read
  44. ; int 26h supposed to destroy all registers except segment registers
  45.     jc    error1        ; if error, leave error no in AX
  46.     mov    ax,0        ; clear error number if no error
  47. error1:
  48.     inc    sp        ; pop the flags
  49.     inc    sp        ; pop the flags
  50.     pop    bp
  51.     pop    di
  52.     pop    si
  53.     ret
  54. _absdw    endp
  55.  
  56. _text    ends
  57.     end
  58.